/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package uy.edu.ort.negocio;

import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import uy.edu.ort.dominio.Fuente;
import uy.edu.ort.entidades.FuenteEntity;

/**
 *
 * @author Gonza
 */
@Stateless
public class FuenteSB implements FuenteSBLocal {

    static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(FuenteSB.class);
    @PersistenceContext
    EntityManager em;

    @Override
    public String alta(Fuente fuente) {
        String retorno = null;
        //System.out.println("En alta fuente , FuenteSB idFuente" + fuente.getIdFuente());

        //Se busca si ya existe el nombre de la fuente
        FuenteEntity fuenteBuscada;
        try {
            List<FuenteEntity> lista = em.createQuery("select idFuente from fuenteEntity where nombreFuente = '" + fuente.getNombreFuente() + "'").getResultList();
            //List<FuenteEntity> lista = em.createQuery("select e from fuenteentity e").getResultList();
            
            
            
            if (!lista.isEmpty()) {
                //Ya existe el nombre de fuente en el sistema.
                retorno = "Error: la fuente ya existe";
            } else {
                //No existe la fuente en el sistema.
                FuenteEntity fuenteEntity = new FuenteEntity();
                fuenteEntity.setIdFuente(fuente.getIdFuente());
                fuenteEntity.setCodAutorizacion(fuente.getCodAutorizacion());
                fuenteEntity.setNombreFuente(fuente.getNombreFuente());
                fuenteEntity.setNombreResponsable(fuente.getNombreResponsable());
                try {
                    em.persist(fuenteEntity);
                    retorno = fuenteEntity.getIdFuente().toString();
                    //System.out.println("El idFuente luego de persist" + fuenteEntity.getIdFuente());    
                } catch (Exception ex) {
                    //Persistir el error en txt
                    System.out.println("Error en CrearFuente1" + ex.getMessage().toString());
                    logger.error(ex.toString());
                }
            }
        } catch (Exception ex) {
            System.out.println("Error en CrearFuente2" + ex.getMessage().toString());
            logger.error(ex.toString());
        }

        return (retorno);

    }

    @Override
    public String eliminar(Long idFuente) {
        String retorno=null;
        FuenteEntity fuenteEntity;
        fuenteEntity = em.find(FuenteEntity.class, idFuente);
        if (fuenteEntity != null) {
            try {
                em.remove(fuenteEntity);
                retorno = "OK";
            } catch (Exception ex) {
                //Persistir el error en txt
                logger.error(ex.toString());
            }
        }
        else {retorno="Ocurrió un Error en la eliminación";}
        return retorno;
    }

    @Override
    public String modificar(Long idFuente, String codigoNuevo) {
        String retorno=null;
        FuenteEntity fuenteEntity;
        fuenteEntity = em.find(FuenteEntity.class, idFuente);
        if (fuenteEntity != null) {
            fuenteEntity.setCodAutorizacion(codigoNuevo);
            try {
                FuenteEntity aux = em.merge(fuenteEntity);
                retorno = "El nuevo código es: " + aux.getCodAutorizacion();
            } catch (IllegalArgumentException ex) {
                //No existía la fuente
                //Persistir el error en txt
                logger.error(ex.toString());
            }
        }
        else {retorno = "Hubo un Error en la actualización";}
        return retorno;
    }
}